
package HuffmanTree;

/**
 * node.java        
 * Fecha: 21/09/12
 * Carnet: 11033
 * Modificado Por: Juan Pablo Argueta Cortés
 * NOTA: Tomado de los ejemplos del Libro Java Structure de Duane A. Bailey
 * 
 * Clase que implementa un nodo que posee una frecuencia y un caracter asignado.
 * @version $Id: BinaryTree.java 34 2007-08-09 14:43:44Z bailey $
 * @author, 2001 duane a. bailey
 */
public class node
{
    private int frequency; // frequency of char
    private char ch;    // the character
    
    /**
     * Construye un nodo con la frecuencia dada
     * @post nuevo nodo con la frecuencia dada y caracter 0
     * @param freq frecuencia con la que se construye el nodo
     */
    public node(int freq)
    // post: construct entry with frequency freq
    {
        ch = 0;
        frequency = freq;
    }
    
    /**
     * Construye un nodo con el caracter dado
     * @post nuevo nodo con el caracter dado y frecuencia 1
     * @param c caracter con el que se construye el nodo
     */
    public node(char c)
    // post: construct character entry with frequency 1
    {
        ch = c;
        frequency = 1;
    }
    
    /**
     * Incrementa la frecuencia del nodo
     * @post se incrementa la frecuendia del nodo en 1
     */ 
    public void incFrecuency()
    {
        this.frequency++;
    }
    
    /**
     * Devuelve la frecuencia del nodo
     * @post Devuelve la frecuencia del nodo
     * @return 
     */
    public int getFrecuency()
    {
        return this.frequency;
    }
    
    /**
     * Devuelve el caracter representado por el nodo
     * @post Devuelve el caracter representado por el nodo
     * @return 
     */
    public char getChar()
    {
        return this.ch;
    }
    
    /**
     * Indica si los nodos poseen el mismo caracter
     * @post Devuelve true si las hojas representan el mismo caracter.
     * @param other
     * @return true si ambas hojas representan el mismo caracter.
     */
    public boolean equals(Object other)
    // post: return true if leaves represent same character
    {
        node that = (node)other;
        return this.ch == that.ch;
    }
}
